<!DOCTYPE html><html lang="en" data-beasties-container><head>
  <meta charset="UTF-8">
  <title>Djongo - MongoDB Django Connector</title>
  <meta name="description" content="Djongo is a smarter approach to database querying. It maps python objects to MongoDB documents.
         It is popularly referred to as an Object Document Mapper or ODM.
         It is an extension to the traditional Django object relational modeling framework.
         Use Django Admin to directly add and modify documents stored in MongoDB.
         Use other contrib modules such as Auth and Sessions without any changes.">
  <meta name="keywords" content="Django, MongoDB, Django MongoDB connector, Object document mapper">
  <meta property="og:type" content="website">
  <meta property="og:locale" content="en_US">
  <meta property="og:site_name" content="Djongomapper">
  <meta property="og:title" content="Djongo">
  <meta property="og:url" content="https://www.djongomapper.com/">
  <meta property="og:description" content="Djongo is a smarter approach to database querying. It maps python objects to MongoDB documents. It is popularly referred to as an Object Document Mapper or ODM. It is an extension to the traditional Django object relational modeling framework. Use Django Admin to directly add and modify documents stored in MongoDB. Use other contrib modules such as Auth and Sessions without any changes.">
  <link rel="canonical" href="https://www.djongomapper.com/">
  <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Organization",
      "name": "Doableware",
      "url": "https://www.djongomapper.com/",
      "logo": "/assets/images/djongo-symbol-small.png"
    }
  </script>
  <meta name="google-site-verification" content="tFNu7Nc9hzKF9v7f6kYaoMbBCNyGREchcKMVdxJuyJo">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
  <noscript>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css">
  </noscript>
  <link rel="stylesheet" type="text/css" media="screen" href="/assets/css/styles.css">
  <link rel="shortcut icon" href="/assets/images/favicon.ico">
  <script>
    if (window.location.hostname != 'localhost') {
      (function (w, d, s, l, i) {
        w[l] = w[l] || [];
        w[l].push({
                    'gtm.start':
                      new Date().getTime(), event: 'gtm.js'
                  });
        var f = d.getElementsByTagName(s)[0],
          j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
        j.async = true;
        j.src =
          'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
        f.parentNode.insertBefore(j, f);
      })(window, document, 'script', 'dataLayer', 'GTM-T72KG6N');
    }
  </script>
  <base href="/">
<link rel="stylesheet" href="styles-JF5ME2K6.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-JF5ME2K6.css"></noscript><style ng-app-id="ng">.cookie-notice[_ngcontent-ng-c2830357685]{height:0}.open[_ngcontent-ng-c2830357685]{height:auto}.close[_ngcontent-ng-c2830357685]{height:0;transition:height .3s ease-out}.mast[_ngcontent-ng-c2830357685]{position:sticky;top:0;padding:.5em 0;z-index:10;background:#fff;border-bottom:1px solid rgb(241.7553,242.60496,243.2547)}@media (max-width: 90rem){.mast[_ngcontent-ng-c2830357685]{padding:.5em 1em}}.mast[_ngcontent-ng-c2830357685] > div[_ngcontent-ng-c2830357685]{margin:0 auto;max-width:80rem;display:flex;flex-direction:row;justify-content:space-between}.mast[_ngcontent-ng-c2830357685]   a[_ngcontent-ng-c2830357685]{display:block;color:#62696e;text-decoration:none}.mast[_ngcontent-ng-c2830357685]   .mast-logo[_ngcontent-ng-c2830357685]{display:flex;gap:var(--space-xs);align-items:center}.mast[_ngcontent-ng-c2830357685]   .mast-logo[_ngcontent-ng-c2830357685]   img[_ngcontent-ng-c2830357685]{max-height:2em}.mast[_ngcontent-ng-c2830357685]   .mast-nav[_ngcontent-ng-c2830357685]   ul[_ngcontent-ng-c2830357685]{display:flex;align-items:center;gap:var(--space-md)}.mast[_ngcontent-ng-c2830357685]   .mast-nav[_ngcontent-ng-c2830357685]   ul.media-small[_ngcontent-ng-c2830357685]{padding-top:var(--space-sm);padding-bottom:var(--space-sm);flex-direction:column;align-items:start;gap:var(--space-xs)}.mast[_ngcontent-ng-c2830357685]   .mast-nav[_ngcontent-ng-c2830357685]   .nav-link[_ngcontent-ng-c2830357685]{position:relative}.mast[_ngcontent-ng-c2830357685]   .mast-nav[_ngcontent-ng-c2830357685]   .nav-link[_ngcontent-ng-c2830357685]:hover:after{width:100%}.mast[_ngcontent-ng-c2830357685]   .mast-nav[_ngcontent-ng-c2830357685]   .nav-link[_ngcontent-ng-c2830357685]:after{content:"";position:absolute;left:50%;bottom:0;transform:translate(-50%);width:0;height:4px;background-color:#62696e;transition:width .2s ease-in-out}.mast[_ngcontent-ng-c2830357685]   .mast-nav[_ngcontent-ng-c2830357685]   .btn-nav[_ngcontent-ng-c2830357685]{padding:.5em 1em;font-size:var(--font-sm);font-weight:700;text-align:center;border-width:0;border-radius:.1875em;color:#fff}.burger[_ngcontent-ng-c2830357685]{display:flex;flex-direction:column;gap:4px}.burger[_ngcontent-ng-c2830357685] > div[_ngcontent-ng-c2830357685]{height:4px;width:var(--space-md);background-color:#62696e;border-radius:4px}.burger[_ngcontent-ng-c2830357685]:hover{cursor:pointer}</style><style ng-app-id="ng">.media-small[_ngcontent-ng-c40719357]{position:fixed;top:3rem;left:0;padding:0 var(--space-sm);background:#fff;height:100vh;border-right:1px solid rgb(241.7553,242.60496,243.2547);z-index:1}.cross[_ngcontent-ng-c40719357]{margin:var(--space-2xs) 0;aspect-ratio:1;width:var(--font-md)}.cross[_ngcontent-ng-c40719357]:hover{cursor:pointer}.cross[_ngcontent-ng-c40719357] > div[_ngcontent-ng-c40719357]{background:#000;height:1px;width:var(--font-md)}.cross[_ngcontent-ng-c40719357] > div[_ngcontent-ng-c40719357]:nth-child(1){transform:translateY(calc(var(--font-md) * .5)) rotate(-45deg)}.cross[_ngcontent-ng-c40719357] > div[_ngcontent-ng-c40719357]:nth-child(2){transform:translateY(calc(var(--font-md) * .5 - 1px)) rotate(45deg)}.open[_ngcontent-ng-c40719357]{transition:transform .4s ease-in;transform:translate(0)}.close[_ngcontent-ng-c40719357]{transform:translate(-100%);padding:0;overflow:hidden;transition:transform .3s ease-out}</style><style ng-app-id="ng">@keyframes _ngcontent-ng-c1200762888_intro{0%{opacity:0}to{opacity:1}}.banner[_ngcontent-ng-c1200762888]{padding:0;position:relative;animation:_ngcontent-ng-c1200762888_intro .1s both;--blur-padding: 2.5em;--solid-padding: 1em;--opacity-padding: 1.5em}@media (max-width: 64rem){.banner[_ngcontent-ng-c1200762888]{--opacity-padding: 0em;--solid-padding: 1em;--blur-padding: 1em}}.banner[_ngcontent-ng-c1200762888]   img[_ngcontent-ng-c1200762888]{object-fit:cover;object-position:50% 50%;z-index:-1}.banner-text-container[_ngcontent-ng-c1200762888]{padding:calc(var(--space-2xl) - var(--blur-padding)) calc(var(--solid-padding) + var(--opacity-padding));margin-left:calc((100% - 80rem) / 2 - calc(var(--solid-padding) + var(--opacity-padding)));width:fit-content;background-image:linear-gradient(to right,rgba(255,255,255,0),hsla(144,76%,15%,.55) var(--opacity-padding),hsla(144,76%,15%,.55) calc(100% - var(--opacity-padding)),rgba(255,255,255,0))}@media (max-width: 80rem){.banner-text-container[_ngcontent-ng-c1200762888]{margin-left:0;width:64rem}}@media (max-width: 64rem){.banner-text-container[_ngcontent-ng-c1200762888]{width:100%}}.banner-text-container[_ngcontent-ng-c1200762888]   .btn[_ngcontent-ng-c1200762888]{background-color:#fff;color:#09411f;border:1px solid #fff}.banner-text-container[_ngcontent-ng-c1200762888]   .btn[_ngcontent-ng-c1200762888]:hover{background-color:transparent;color:#fff}.banner-text[_ngcontent-ng-c1200762888]{color:#fff;padding:var(--blur-padding);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);-webkit-mask-image:linear-gradient(to right,rgba(0,0,0,0),rgb(0,0,0) var(--blur-padding),rgb(0,0,0) calc(100% - var(--blur-padding)),rgba(0,0,0,0)),linear-gradient(to bottom,rgba(0,0,0,0),rgb(0,0,0) var(--blur-padding),rgb(0,0,0) calc(100% - var(--blur-padding)),rgba(0,0,0,0));mask-image:linear-gradient(to right,rgba(0,0,0,0),rgb(0,0,0) var(--blur-padding),rgb(0,0,0) calc(100% - var(--blur-padding)),rgba(0,0,0,0)),linear-gradient(to bottom,rgba(0,0,0,0),rgb(0,0,0) var(--blur-padding),rgb(0,0,0) calc(100% - var(--blur-padding)),rgba(0,0,0,0));mask-mode:alpha;-webkit-mask-composite:source-in;mask-composite:intersect}.banner-text[_ngcontent-ng-c1200762888]   h1[_ngcontent-ng-c1200762888]{margin-top:0;font-size:2.441em;margin-bottom:var(--space-md)}@media (max-width: 37.5em){.banner-text[_ngcontent-ng-c1200762888]   h1[_ngcontent-ng-c1200762888]{font-size:1.953em}}.banner-lead[_ngcontent-ng-c1200762888]{font-size:1.25em;margin-bottom:var(--space-lg)}.scroll-bar[_ngcontent-ng-c1200762888]::-webkit-scrollbar, .scroll-bar[_ngcontent-ng-c1200762888]   pre[_ngcontent-ng-c1200762888]::-webkit-scrollbar{width:4px;height:4px}.scroll-bar[_ngcontent-ng-c1200762888]::-webkit-scrollbar-track, .scroll-bar[_ngcontent-ng-c1200762888]   pre[_ngcontent-ng-c1200762888]::-webkit-scrollbar-track{background:#000}.scroll-bar[_ngcontent-ng-c1200762888]::-webkit-scrollbar-thumb, .scroll-bar[_ngcontent-ng-c1200762888]   pre[_ngcontent-ng-c1200762888]::-webkit-scrollbar-thumb{background:#263238}.query[_ngcontent-ng-c1200762888]{display:grid;gap:var(--space-md);grid-template-columns:min-content min-content;grid-template-rows:auto auto;grid-template-areas:"mongo djongo" "mongo text"}.query[_ngcontent-ng-c1200762888]   .djongo[_ngcontent-ng-c1200762888]{grid-area:djongo;overflow-x:auto}.query[_ngcontent-ng-c1200762888]   .mongo[_ngcontent-ng-c1200762888]{grid-area:mongo;overflow-y:auto;max-height:13.5em}.query[_ngcontent-ng-c1200762888]   .text[_ngcontent-ng-c1200762888]{font-size:1.25em;grid-area:text}.query[_ngcontent-ng-c1200762888]   .highlighter-rouge[_ngcontent-ng-c1200762888], .query[_ngcontent-ng-c1200762888]   .btn[_ngcontent-ng-c1200762888]{margin-bottom:0}.query[_ngcontent-ng-c1200762888]   .btn[_ngcontent-ng-c1200762888]:hover{cursor:default}@media (max-width: 80rem){.query[_ngcontent-ng-c1200762888]{grid-template-columns:min-content auto;grid-template-areas:"djongo djongo" "mongo text"}}@media (max-width: 48rem){.query[_ngcontent-ng-c1200762888]{grid-template-columns:auto;grid-template-areas:"djongo" "text" "mongo"}}</style><style ng-app-id="ng">.l-grid[_ngcontent-ng-c2080390603]{display:grid;font-size:var(--font-sm);column-gap:1rem;grid-template-columns:repeat(3,1fr)}.l-grid[_ngcontent-ng-c2080390603] > div[_ngcontent-ng-c2080390603]{display:grid;grid-template-rows:subgrid;margin-bottom:1rem}@media (max-width: 64rem){.l-grid[_ngcontent-ng-c2080390603]{grid-template-columns:repeat(2,1fr);font-size:var(--font-base)}}@media (max-width: 48rem){.l-grid[_ngcontent-ng-c2080390603]{grid-template-columns:repeat(1,1fr)}}.grid-2-row[_ngcontent-ng-c2080390603]{grid-row:span 2}.grid-3-row[_ngcontent-ng-c2080390603]{grid-row:span 3}.grid-4-row[_ngcontent-ng-c2080390603]{grid-row:span 4}.grid-5-col[_ngcontent-ng-c2080390603]{grid-template-columns:repeat(5,1fr)}@media (max-width: 80rem){.grid-5-col[_ngcontent-ng-c2080390603]{grid-template-columns:repeat(4,1fr)}}@media (max-width: 64rem){.grid-5-col[_ngcontent-ng-c2080390603]{grid-template-columns:repeat(3,1fr)}}@media (max-width: 32rem){.grid-5-col[_ngcontent-ng-c2080390603]{grid-template-columns:repeat(2,1fr)}}.l-tiles[_ngcontent-ng-c2080390603]   h2[_ngcontent-ng-c2080390603]{margin-top:0;margin-bottom:.5em;text-align:left;font-size:var(--font-lg)}.l-tiles[_ngcontent-ng-c2080390603] > div[_ngcontent-ng-c2080390603]{box-shadow:0 5px 15px #00000059;padding:1.5em;border-radius:.375em;background-color:#fff}.l-tiles[_ngcontent-ng-c2080390603]   img[_ngcontent-ng-c2080390603]{height:5em;display:block;margin:0 auto var(--space-md)}</style><style ng-app-id="ng">.l-logo[_ngcontent-ng-c1775882310]{grid-gap:1em;display:grid;grid-template-columns:repeat(auto-fit,9em);grid-auto-rows:5em;justify-items:center;align-items:center;justify-content:center}.l-logo[_ngcontent-ng-c1775882310]   img[_ngcontent-ng-c1775882310]{max-block-size:100%;width:auto;height:auto;object-fit:contain}</style><style ng-app-id="ng">.circles[_ngcontent-ng-c2097961386]{display:flex;column-gap:5px;justify-content:center}.circles[_ngcontent-ng-c2097961386] > div[_ngcontent-ng-c2097961386]{height:10px;width:10px;border-radius:5px;border:1px solid rgb(188.7765,193.0248,196.2735)}.circles[_ngcontent-ng-c2097961386] > div[_ngcontent-ng-c2097961386]:hover{cursor:pointer}.active[_ngcontent-ng-c2097961386]{background-color:#094320}.enter[_ngcontent-ng-c2097961386], .enter-right[_ngcontent-ng-c2097961386], .enter-left[_ngcontent-ng-c2097961386]{transform:translate(0);transition:transform .4s ease}@starting-style{.enter-left[_ngcontent-ng-c2097961386]{transform:translate(-100%)}}@starting-style{.enter-right[_ngcontent-ng-c2097961386]{transform:translate(100%)}}.exit[_ngcontent-ng-c2097961386], .exit-right[_ngcontent-ng-c2097961386], .exit-left[_ngcontent-ng-c2097961386]{transition:transform .3s ease;position:absolute;width:100%;height:auto}.exit-left[_ngcontent-ng-c2097961386]{transform:translate(-100%)}.exit-right[_ngcontent-ng-c2097961386]{transform:translate(100%)}.deck[_ngcontent-ng-c2097961386]{overflow:hidden;position:relative;display:flex;margin-bottom:var(--space-md)}.deck[_ngcontent-ng-c2097961386] > div[_ngcontent-ng-c2097961386]{height:calc(310px + 2rem);padding:15px 0 25px;flex:auto;max-inline-size:100%}@media (max-width: 64rem){.deck[_ngcontent-ng-c2097961386] > div[_ngcontent-ng-c2097961386]{height:calc(620px + 4rem)}}</style><style ng-app-id="ng">.pc[_ngcontent-ng-c3744738751]{display:flex;gap:var(--space-md)}.pc[_ngcontent-ng-c3744738751] > div[_ngcontent-ng-c3744738751]{flex:50%;max-inline-size:100%}.pc[_ngcontent-ng-c3744738751]   img[_ngcontent-ng-c3744738751]{object-fit:contain;width:auto;height:auto}@media (max-width: 64rem){.pc[_ngcontent-ng-c3744738751]{flex-direction:column;align-items:center}}.pc-slideShow[_ngcontent-ng-c3744738751]{border-radius:50px;box-shadow:0 5px 15px #00000059;margin:0 var(--space-lg);font-size:var(--font-md);height:100%}.pc-slideShow[_ngcontent-ng-c3744738751]   img[_ngcontent-ng-c3744738751]{margin:0 auto}.pc-slideShow[_ngcontent-ng-c3744738751] > div[_ngcontent-ng-c3744738751]:first-child{background-image:linear-gradient(to right,#094320cc,#094320);padding:1rem}.pc-slideShow[_ngcontent-ng-c3744738751]   div[_ngcontent-ng-c3744738751]:nth-child(2){padding:50px 0 50px 50px}@media (max-width: 64rem){.pc-slideShow[_ngcontent-ng-c3744738751]   div[_ngcontent-ng-c3744738751]:nth-child(2){padding:0 1rem 50px}}@media (max-width: 64rem){.pc-slideShow[_ngcontent-ng-c3744738751]{align-items:stretch}}.pc-slideShow[_ngcontent-ng-c3744738751]:not(.pc-img-right) > div[_ngcontent-ng-c3744738751]:first-child{border-top-left-radius:inherit;border-bottom-left-radius:inherit}@media (max-width: 64rem){.pc-slideShow[_ngcontent-ng-c3744738751]:not(.pc-img-right) > div[_ngcontent-ng-c3744738751]:first-child{border-bottom-left-radius:unset;border-top-right-radius:inherit}}.pc-slideShow.pc-img-right[_ngcontent-ng-c3744738751] > div[_ngcontent-ng-c3744738751]:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}@media (max-width: 64rem){.pc-slideShow.pc-img-right[_ngcontent-ng-c3744738751] > div[_ngcontent-ng-c3744738751]:first-child{border-bottom-right-radius:unset;border-top-left-radius:inherit}}.pc-img-right[_ngcontent-ng-c3744738751]{flex-direction:row-reverse}@media (max-width: 64rem){.pc-img-right[_ngcontent-ng-c3744738751]{flex-direction:column}}</style><style ng-app-id="ng">.l-tab[_ngcontent-ng-c1643807157]{display:grid;grid-template-columns:repeat(3,1fr);background:#fff;border-radius:.1875em;box-shadow:0 5px 15px #00000059}@media (max-width: 48rem){.l-tab[_ngcontent-ng-c1643807157]{grid-template-columns:repeat(2,1fr)}}.l-tab[_ngcontent-ng-c1643807157] > div[_ngcontent-ng-c1643807157]{padding:1.5em;border-radius:.1875em;font-size:var(--font-sm);display:flex;flex-direction:column;align-items:center;transition:box-shadow .2s}.l-tab[_ngcontent-ng-c1643807157] > div[_ngcontent-ng-c1643807157]:hover{box-shadow:0 5px 15px #00000059}.l-tab[_ngcontent-ng-c1643807157] > :where(div[_ngcontent-ng-c1643807157]){border:2px solid transparent}.l-tab[_ngcontent-ng-c1643807157]   .active[_ngcontent-ng-c1643807157]{border:2px solid hsl(144,29.5877862595%,38.5294117647%)}.l-tab[_ngcontent-ng-c1643807157]   img[_ngcontent-ng-c1643807157]{height:var(--font-xl);margin-bottom:var(--space-md)}h3[_ngcontent-ng-c1643807157]{font-size:var(--font-lg);font-weight:500;line-height:1.58;text-align:left;margin-bottom:var(--space-md)}</style><style ng-app-id="ng">.chart[_ngcontent-ng-c2648614480]{display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto auto}.chart[_ngcontent-ng-c2648614480]   p[_ngcontent-ng-c2648614480]{margin-bottom:0}.x-axis[_ngcontent-ng-c2648614480]{transform:rotate(-90deg);align-self:center;grid-area:1/1/2/2}.y-axis[_ngcontent-ng-c2648614480]{margin:1em 0 var(--space-lg);text-align:center;grid-area:2/2/3/3}.chart[_ngcontent-ng-c2648614480] > .cta[_ngcontent-ng-c2648614480]{grid-area:3/2/4/3}.chart-grid[_ngcontent-ng-c2648614480]{grid-area:1/2/2/3;display:grid;grid-template-columns:var(--space-md) auto var(--space-md) auto var(--space-md) auto;grid-template-rows:repeat(4,min-content) var(--space-md);border-bottom:1px solid hsl(0,0%,0%);border-left:1px solid hsl(0,0%,0%)}@media (max-width: 64rem){.chart-grid[_ngcontent-ng-c2648614480]{grid-template-columns:10px auto 10px;grid-template-rows:repeat(3,min-content min-content var(--space-md))}}.c1-title[_ngcontent-ng-c2648614480], .c2-title[_ngcontent-ng-c2648614480], .c3-title[_ngcontent-ng-c2648614480]{border-bottom:2px solid rgb(188.7765,193.0248,196.2735);border-radius:.375em .375em 0 0;padding:.6em 1.2em}.c1-content[_ngcontent-ng-c2648614480], .c2-content[_ngcontent-ng-c2648614480], .c3-content[_ngcontent-ng-c2648614480]{border-radius:0 0 .375em .375em;padding:1.2em}.c1-title[_ngcontent-ng-c2648614480], .c2-title[_ngcontent-ng-c2648614480], .c3-title[_ngcontent-ng-c2648614480], .c1-content[_ngcontent-ng-c2648614480], .c2-content[_ngcontent-ng-c2648614480], .c3-content[_ngcontent-ng-c2648614480]{background-color:#f2f3f3}.c1-title[_ngcontent-ng-c2648614480]{grid-area:3/2/4/3}@media (max-width: 64rem){.c1-title[_ngcontent-ng-c2648614480]{grid-area:7/2/8/3}}.c1-content[_ngcontent-ng-c2648614480]{grid-area:4/2/5/3}@media (max-width: 64rem){.c1-content[_ngcontent-ng-c2648614480]{grid-area:8/2/9/3}}.c2-title[_ngcontent-ng-c2648614480]{grid-area:2/4/3/5}@media (max-width: 64rem){.c2-title[_ngcontent-ng-c2648614480]{grid-area:4/2/5/3}}.c2-content[_ngcontent-ng-c2648614480]{grid-area:3/4/5/5}@media (max-width: 64rem){.c2-content[_ngcontent-ng-c2648614480]{grid-area:5/2/6/3}}.c3-title[_ngcontent-ng-c2648614480]{grid-area:1/6/2/7}@media (max-width: 64rem){.c3-title[_ngcontent-ng-c2648614480]{grid-area:1/2/2/3}}.c3-content[_ngcontent-ng-c2648614480]{grid-area:2/6/5/7}@media (max-width: 64rem){.c3-content[_ngcontent-ng-c2648614480]{grid-area:2/2/3/3}}</style><style ng-app-id="ng">.l-tire[_ngcontent-ng-c939636367]{display:grid;justify-content:space-evenly;grid-template-columns:repeat(auto-fit,18em);row-gap:1em}.tire-benefits[_ngcontent-ng-c939636367]{margin-right:1em;margin-left:1em;text-align:left}.tire-benefits[_ngcontent-ng-c939636367] > div[_ngcontent-ng-c939636367]:first-child{display:grid;grid-template-columns:1em 1fr;gap:.7em;align-items:baseline;margin-bottom:2em;font-size:var(--font-sm)}.tire-benefits[_ngcontent-ng-c939636367] > div[_ngcontent-ng-c939636367]:first-child > div[_ngcontent-ng-c939636367]{display:flex}.tire-col[_ngcontent-ng-c939636367]{display:grid;row-gap:0;grid-template-rows:subgrid;grid-row:span 6;text-align:center;background-color:#fff;border:1px solid rgb(241.7553,242.60496,243.2547);border-radius:4px;padding:1em}.tire-col.is-grey[_ngcontent-ng-c939636367]{background-color:#f2f3f3}.tire-col[_ngcontent-ng-c939636367]   ul[_ngcontent-ng-c939636367]{text-align:left;list-style:none}.tire-col[_ngcontent-ng-c939636367]   li[_ngcontent-ng-c939636367]:before{content:"";display:inline-block;height:.75em;width:.97em;background-image:url(/assets/images/tick.svg);background-repeat:no-repeat;background-position:left center;background-size:1em;margin-right:.3em}.tire-col[_ngcontent-ng-c939636367]   form[_ngcontent-ng-c939636367]{text-align:left;width:100%}.tire-col[_ngcontent-ng-c939636367]   form[_ngcontent-ng-c939636367]   input[type=submit][_ngcontent-ng-c939636367]{text-align:center;margin:0 auto 1.75em;display:block}.tire-title[_ngcontent-ng-c939636367]{font-size:inherit;font-weight:700;margin-bottom:var(--space-lg)}.tire-cta[_ngcontent-ng-c939636367]{margin-bottom:calc(var(--space-lg) + .5em)}.tire-price[_ngcontent-ng-c939636367]{font-weight:700;font-size:2.5em;line-height:1.1}.tire-period[_ngcontent-ng-c939636367]{font-size:.9em;font-weight:lighter;margin-bottom:1em}</style><style ng-app-id="ng">.l-grid[_ngcontent-ng-c2134432430]{display:grid;font-size:var(--font-sm);column-gap:1rem;grid-template-columns:repeat(3,1fr)}.l-grid[_ngcontent-ng-c2134432430] > div[_ngcontent-ng-c2134432430]{display:grid;grid-template-rows:subgrid;margin-bottom:1rem}@media (max-width: 64rem){.l-grid[_ngcontent-ng-c2134432430]{grid-template-columns:repeat(2,1fr);font-size:var(--font-base)}}@media (max-width: 48rem){.l-grid[_ngcontent-ng-c2134432430]{grid-template-columns:repeat(1,1fr)}}.grid-2-row[_ngcontent-ng-c2134432430]{grid-row:span 2}.grid-3-row[_ngcontent-ng-c2134432430]{grid-row:span 3}.grid-4-row[_ngcontent-ng-c2134432430]{grid-row:span 4}.grid-5-col[_ngcontent-ng-c2134432430]{grid-template-columns:repeat(5,1fr)}@media (max-width: 80rem){.grid-5-col[_ngcontent-ng-c2134432430]{grid-template-columns:repeat(4,1fr)}}@media (max-width: 64rem){.grid-5-col[_ngcontent-ng-c2134432430]{grid-template-columns:repeat(3,1fr)}}@media (max-width: 32rem){.grid-5-col[_ngcontent-ng-c2134432430]{grid-template-columns:repeat(2,1fr)}}.l-grid-text[_ngcontent-ng-c2134432430]   h2[_ngcontent-ng-c2134432430]{margin-top:0;margin-bottom:1em;font-size:var(--font-lg);text-align:left}.l-grid-text[_ngcontent-ng-c2134432430]   svg[_ngcontent-ng-c2134432430]{margin-bottom:1em}.l-grid-text[_ngcontent-ng-c2134432430]   .line[_ngcontent-ng-c2134432430]{margin-bottom:1em;width:2.6em;height:5px;background-color:#094320}</style><link _ngcontent-ng-c1200762888 as="image" href="/assets/images/banner-305:85.svg" rel="preload" fetchpriority="high" imagesizes="100vw"><link _ngcontent-ng-c3744738751 as="image" href="/assets/images/slide-0.svg" rel="preload" fetchpriority="high"></head>
<body><!--nghm--><script type="text/javascript" id="ng-event-dispatch-contract">(()=>{function p(t,n,r,o,e,i,f,m){return{eventType:t,event:n,targetElement:r,eic:o,timeStamp:e,eia:i,eirp:f,eiack:m}}function u(t){let n=[],r=e=>{n.push(e)};return{c:t,q:n,et:[],etc:[],d:r,h:e=>{r(p(e.type,e,e.target,t,Date.now()))}}}function s(t,n,r){for(let o=0;o<n.length;o++){let e=n[o];(r?t.etc:t.et).push(e),t.c.addEventListener(e,t.h,r)}}function c(t,n,r,o,e=window){let i=u(t);e._ejsas||(e._ejsas={}),e._ejsas[n]=i,s(i,r),s(i,o,!0)}window.__jsaction_bootstrap=c;})();
</script><script>window.__jsaction_bootstrap(document.body,"ng",["click"],[]);</script>
<app-root ng-version="20.1.4" _nghost-ng-c2830357685 ngh="12" ng-server-context="ssg"><div _ngcontent-ng-c2830357685 class="page-splash"><div _ngcontent-ng-c2830357685 class="mast"><div _ngcontent-ng-c2830357685><div _ngcontent-ng-c2830357685 class="mast-logo"><a _ngcontent-ng-c2830357685 href="/"><img _ngcontent-ng-c2830357685 src="/assets/images/djongo-symbol-small.png" alt="Djongo"></a><!----></div><div _ngcontent-ng-c2830357685 class="mast-nav"><app-nav _ngcontent-ng-c2830357685 _nghost-ng-c40719357 ngh="0"><!----><!----><!----></app-nav></div></div></div><div _ngcontent-ng-c2830357685 class="initial-content"><router-outlet _ngcontent-ng-c2830357685></router-outlet><app-home ngh="11"><main><app-banner _nghost-ng-c1200762888 ngh="1"><div _ngcontent-ng-c1200762888 class="banner"><img _ngcontent-ng-c1200762888 ngsrc="/assets/images/banner-305:85.svg" fill sizes="100vw" alt="banner" priority loading="eager" fetchpriority="high" decoding="sync" ng-img="true" src="/assets/images/banner-305:85.svg" style="position: absolute; width: 100%; height: 100%; inset: 0;"><div _ngcontent-ng-c1200762888 class="banner-text-container"><div _ngcontent-ng-c1200762888 class="banner-text"><h1 _ngcontent-ng-c1200762888 itemprop="headline">Django MongoDB Connector</h1><p _ngcontent-ng-c1200762888 class="banner-lead">Djongo makes MongoDB programing easy.</p><div _ngcontent-ng-c1200762888 class="query"><div _ngcontent-ng-c1200762888 class="scroll-bar djongo"><div _ngcontent-ng-c1200762888 class="language-python highlighter-rouge highlight codehilite"><pre _ngcontent-ng-c1200762888><span _ngcontent-ng-c1200762888></span><code _ngcontent-ng-c1200762888><span _ngcontent-ng-c1200762888 class="n">qs</span> <span _ngcontent-ng-c1200762888 class="o">=</span> <span _ngcontent-ng-c1200762888 class="n">Entry</span><span _ngcontent-ng-c1200762888 class="o">.</span><span _ngcontent-ng-c1200762888 class="n">objects</span><span _ngcontent-ng-c1200762888 class="o">.</span><span _ngcontent-ng-c1200762888 class="n">filter</span><span _ngcontent-ng-c1200762888 class="p">(</span><span _ngcontent-ng-c1200762888 class="n">author__name</span><span _ngcontent-ng-c1200762888 class="o">=</span><span _ngcontent-ng-c1200762888 class="s1">'Paul'</span><span _ngcontent-ng-c1200762888 class="p">)</span><span _ngcontent-ng-c1200762888 class="o">.</span><span _ngcontent-ng-c1200762888 class="n">select_related</span><span _ngcontent-ng-c1200762888 class="p">(</span><span _ngcontent-ng-c1200762888 class="s1">'blog'</span><span _ngcontent-ng-c1200762888 class="p">)</span>
</code></pre></div></div><div _ngcontent-ng-c1200762888 class="scroll-bar mongo"><div _ngcontent-ng-c1200762888 class="language-python highlighter-rouge highlight codehilite"><pre _ngcontent-ng-c1200762888><span _ngcontent-ng-c1200762888></span><code _ngcontent-ng-c1200762888><span _ngcontent-ng-c1200762888 class="bp">self</span><span _ngcontent-ng-c1200762888 class="o">.</span><span _ngcontent-ng-c1200762888 class="n">db</span><span _ngcontent-ng-c1200762888 class="p">[</span><span _ngcontent-ng-c1200762888 class="s1">'entry'</span><span _ngcontent-ng-c1200762888 class="p">]</span><span _ngcontent-ng-c1200762888 class="o">.</span><span _ngcontent-ng-c1200762888 class="n">aggregate</span><span _ngcontent-ng-c1200762888 class="p">(</span>
  <span _ngcontent-ng-c1200762888 class="p">[{</span>
    <span _ngcontent-ng-c1200762888 class="s1">'$match'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
      <span _ngcontent-ng-c1200762888 class="s1">'author_id'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
        <span _ngcontent-ng-c1200762888 class="s1">'$ne'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">None</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'$exists'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">True</span>
       <span _ngcontent-ng-c1200762888 class="p">}</span>
     <span _ngcontent-ng-c1200762888 class="p">}</span>
    <span _ngcontent-ng-c1200762888 class="p">},</span>
    <span _ngcontent-ng-c1200762888 class="p">{</span>
      <span _ngcontent-ng-c1200762888 class="s1">'$lookup'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
        <span _ngcontent-ng-c1200762888 class="s1">'from'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'author'</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'localField'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'author_id'</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'foreignField'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'id'</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'as'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'author'</span>
      <span _ngcontent-ng-c1200762888 class="p">}</span>
    <span _ngcontent-ng-c1200762888 class="p">},</span>
    <span _ngcontent-ng-c1200762888 class="p">{</span>
      <span _ngcontent-ng-c1200762888 class="s1">'$unwind'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'$author'</span>
    <span _ngcontent-ng-c1200762888 class="p">},</span>
    <span _ngcontent-ng-c1200762888 class="p">{</span>
      <span _ngcontent-ng-c1200762888 class="s1">'$lookup'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
        <span _ngcontent-ng-c1200762888 class="s1">'from'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'blog'</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'localField'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'blog_id'</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'foreignField'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'id'</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'as'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'blog'</span>
      <span _ngcontent-ng-c1200762888 class="p">}</span>
    <span _ngcontent-ng-c1200762888 class="p">},</span>
    <span _ngcontent-ng-c1200762888 class="p">{</span>
      <span _ngcontent-ng-c1200762888 class="s1">'$unwind'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
        <span _ngcontent-ng-c1200762888 class="s1">'path'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'$blog'</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'preserveNullAndEmptyArrays'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">True</span>
      <span _ngcontent-ng-c1200762888 class="p">}</span>
    <span _ngcontent-ng-c1200762888 class="p">},</span>
    <span _ngcontent-ng-c1200762888 class="p">{</span>
      <span _ngcontent-ng-c1200762888 class="s1">'$addFields'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
        <span _ngcontent-ng-c1200762888 class="s1">'blog'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
          <span _ngcontent-ng-c1200762888 class="s1">'$ifNull'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">[</span><span _ngcontent-ng-c1200762888 class="s1">'$blog'</span><span _ngcontent-ng-c1200762888 class="p">,</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
            <span _ngcontent-ng-c1200762888 class="s1">'id'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">None</span><span _ngcontent-ng-c1200762888 class="p">,</span>
            <span _ngcontent-ng-c1200762888 class="s1">'title'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">None</span>
          <span _ngcontent-ng-c1200762888 class="p">}]</span>
        <span _ngcontent-ng-c1200762888 class="p">}</span>
      <span _ngcontent-ng-c1200762888 class="p">}</span>
    <span _ngcontent-ng-c1200762888 class="p">},</span>
    <span _ngcontent-ng-c1200762888 class="p">{</span>
      <span _ngcontent-ng-c1200762888 class="s1">'$match'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
        <span _ngcontent-ng-c1200762888 class="s1">'author.name'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
          <span _ngcontent-ng-c1200762888 class="s1">'$eq'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="s1">'Paul'</span>
        <span _ngcontent-ng-c1200762888 class="p">}</span>
      <span _ngcontent-ng-c1200762888 class="p">}</span>
    <span _ngcontent-ng-c1200762888 class="p">},</span>
    <span _ngcontent-ng-c1200762888 class="p">{</span>
      <span _ngcontent-ng-c1200762888 class="s1">'$project'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="p">{</span>
        <span _ngcontent-ng-c1200762888 class="s1">'id'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">True</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'blog_id'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">True</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'author_id'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">True</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'content'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">True</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'blog.id'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">True</span><span _ngcontent-ng-c1200762888 class="p">,</span>
        <span _ngcontent-ng-c1200762888 class="s1">'blog.title'</span><span _ngcontent-ng-c1200762888 class="p">:</span> <span _ngcontent-ng-c1200762888 class="kc">True</span>
      <span _ngcontent-ng-c1200762888 class="p">}</span>
    <span _ngcontent-ng-c1200762888 class="p">}]</span>
</code></pre></div></div><div _ngcontent-ng-c1200762888 class="text"><p _ngcontent-ng-c1200762888>Djongo generates complex, error free, MongoDB queries automatically.</p><p _ngcontent-ng-c1200762888>It takes the query on the top and generates the MongoDB query as the output.</p></div></div></div></div></div></app-banner><article itemscope itemtype="https://schema.org/CreativeWork"><meta itemprop="headline" content="Django MongoDB Connector"><div class="pitch-white"><section><div class="l-fixed-content"><app-tiles _nghost-ng-c2080390603 ngh="2"><div _ngcontent-ng-c2080390603 class="l-grid l-tiles"><div _ngcontent-ng-c2080390603 class="grid-4-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Simplify Query Creation" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/query.svg"><!----><h2 _ngcontent-ng-c2080390603>Autogenerated Queries</h2><p _ngcontent-ng-c2080390603>Writing query documents can get out of control. Djongo does the heavy lifting of creating query documents for you.</p><a _ngcontent-ng-c2080390603 class="cta" id="tiles-query" href="/docs/get-started" jsaction="click:;">More </a><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-4-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Switch DBs instantly" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/noSql.svg"><!----><h2 _ngcontent-ng-c2080390603>Database Abstraction</h2><p _ngcontent-ng-c2080390603>Switch between MongoDB and other SQL databases. Limit the impact to your Models and business logic.</p><a _ngcontent-ng-c2080390603 class="cta" id="tiles-no-sql" href="/docs/integrating-django-with-mongodb#how-it-works" jsaction="click:;">More </a><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-4-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Security" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/security.svg"><!----><h2 _ngcontent-ng-c2080390603>Security</h2><p _ngcontent-ng-c2080390603>Directly saving raw JSON into the database is scary. Djongo secures and validates the JSON document before saving.</p><a _ngcontent-ng-c2080390603 class="cta" id="tiles-security" href="/#security-and-integrity-checks" jsaction="click:;">More </a><!----></div><!----><!----><div _ngcontent-ng-c2080390603 class="grid-4-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Cloud Services" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/cloud-tiles.svg"><!----><h2 _ngcontent-ng-c2080390603>Container Integration</h2><p _ngcontent-ng-c2080390603>Managed DBs, Storage, Kubernetes, Compute and Virtual Private Cloud (VPC) Integration</p><a _ngcontent-ng-c2080390603 class="cta" id="tiles-services" href="/djongocs/create-account" jsaction="click:;">More </a><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-4-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Rapid Prototyping" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/rapid.svg"><!----><h2 _ngcontent-ng-c2080390603>Rapid Prototyping</h2><p _ngcontent-ng-c2080390603>Speed up development with schema free models. Enforce protection with evolution.</p><a _ngcontent-ng-c2080390603 class="cta" id="tiles-rapid-prototyping" href="/#prototyping" jsaction="click:;">More </a><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-4-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Web Interface" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/webpage.svg"><!----><h2 _ngcontent-ng-c2080390603>Web Interface</h2><p _ngcontent-ng-c2080390603>Access and modify MongoDB through the dashboard, CLI or API</p><a _ngcontent-ng-c2080390603 class="cta" id="tiles-webpage" href="/docs/integrating-django-with-mongodb#use-django-admin-to-add-documents" jsaction="click:;">More </a><!----></div><!----><!----><!----></div></app-tiles></div></section><section><div class="l-fixed-content"><app-logo _nghost-ng-c1775882310 ngh="3"><div _ngcontent-ng-c1775882310 class="l-logo"><img _ngcontent-ng-c1775882310 alt="hulu" width="123" height="123" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/hulu.svg"><img _ngcontent-ng-c1775882310 alt="broadcom" width="625" height="305" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/broadcom.svg"><img _ngcontent-ng-c1775882310 alt="medi2data." width="200" height="200" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/medi2data.jpeg"><img _ngcontent-ng-c1775882310 alt="mediakind" width="426" height="70" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/mediakind.svg"><img _ngcontent-ng-c1775882310 alt="sumeru" width="184" height="136" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/sumeru.png"><img _ngcontent-ng-c1775882310 alt="e2e" width="187" height="54" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/e2e.png"><!----></div></app-logo></div></section><section><div class="l-fixed-content"><h2 class="is-subtitled">MongoDB Object Document Mapper</h2><p>Djongo ODM connects Python objects to MongoDB elements</p><app-slide-show _nghost-ng-c2097961386 ngh="5"><link _ngcontent-ng-c2097961386 rel="preload" as="image" href="assets/images/slide-1.svg" fetchpriority="high"><link _ngcontent-ng-c2097961386 rel="preload" as="image" href="assets/images/slide-2.svg" fetchpriority="high"><link _ngcontent-ng-c2097961386 rel="preload" as="image" href="assets/images/slide-3.svg" fetchpriority="high"><div _ngcontent-ng-c2097961386 class="deck"><div _ngcontent-ng-c2097961386 class="enter-right"><app-postcard _ngcontent-ng-c2097961386 _nghost-ng-c3744738751 ngh="4"><div _ngcontent-ng-c3744738751 class="pc pc-img-right pc-slideShow"><div _ngcontent-ng-c3744738751><img _ngcontent-ng-c3744738751 alt="postcard" width="250" height="270" loading="eager" fetchpriority="high" decoding="sync" ng-img="true" src="/assets/images/slide-0.svg"><!----></div><div _ngcontent-ng-c3744738751><p _ngcontent-ng-c2097961386>Djongo maps a class definition to a MongoDB collection.</p><div _ngcontent-ng-c2097961386 class="highlighter-rouge highlight codehilite"><pre _ngcontent-ng-c2097961386><span _ngcontent-ng-c2097961386></span><code _ngcontent-ng-c2097961386><span _ngcontent-ng-c2097961386 class="k">class</span> <span _ngcontent-ng-c2097961386 class="nc">Blog</span><span _ngcontent-ng-c2097961386 class="p">(</span><span _ngcontent-ng-c2097961386 class="n">models</span><span _ngcontent-ng-c2097961386 class="o">.</span><span _ngcontent-ng-c2097961386 class="n">Model</span><span _ngcontent-ng-c2097961386 class="p">):</span>
  <span _ngcontent-ng-c2097961386 class="o">...</span></code></pre></div></div></div></app-postcard></div><!----><!----><!----><!----></div><div _ngcontent-ng-c2097961386 class="circles"><div _ngcontent-ng-c2097961386 class="active" jsaction="click:;"></div><div _ngcontent-ng-c2097961386 class jsaction="click:;"></div><div _ngcontent-ng-c2097961386 class jsaction="click:;"></div><div _ngcontent-ng-c2097961386 class jsaction="click:;"></div><!----></div></app-slide-show></div></section><section><div class="l-fixed-content"><h2 id="django-admin" class="is-subtitled">Django Admin</h2><p>Djongo makes Django admin run on a MongoDB</p><app-postcard _nghost-ng-c3744738751 ngh="4"><div _ngcontent-ng-c3744738751 class="pc pc-img-right"><div _ngcontent-ng-c3744738751><img _ngcontent-ng-c3744738751 alt="postcard" width="813" height="513" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/admin.png"><!----></div><div _ngcontent-ng-c3744738751><p>Create, modify, and delete data on MongoDB from Django admin. Admin even displays data stored as embedded documents or an array of embedded documents.</p><p>Djongo includes handy UI elements to manipulate Embedded MongoDB documents on Admin.</p><p>Fire up Django admin on localhost:8000/admin/ to get started.</p></div></div></app-postcard></div></section><section><div class="l-fixed-content"><h2 class="is-subtitled">MongoDB Mapping Primitives</h2><p> Djongo introduces MongoDB mapping primitives for easy MongoDB operations </p><app-tab-grid _nghost-ng-c1643807157 ngh="7"><app-postcard _ngcontent-ng-c1643807157 _nghost-ng-c3744738751 ngh="6"><div _ngcontent-ng-c3744738751 class="pc"><div _ngcontent-ng-c3744738751><!----><div _ngcontent-ng-c1643807157 ngprojectas="postcard-media" class="l-tab"><div _ngcontent-ng-c1643807157 class="active" jsaction="click:;"><img _ngcontent-ng-c1643807157 src="/assets/images/embedded-field.svg"><div _ngcontent-ng-c1643807157>EmbeddedField</div></div><div _ngcontent-ng-c1643807157 class jsaction="click:;"><img _ngcontent-ng-c1643807157 src="/assets/images/array-field.svg"><div _ngcontent-ng-c1643807157>ArrayField</div></div><div _ngcontent-ng-c1643807157 class jsaction="click:;"><img _ngcontent-ng-c1643807157 src="/assets/images/array-reference-field.svg"><div _ngcontent-ng-c1643807157>ArrayReferenceField</div></div><div _ngcontent-ng-c1643807157 class jsaction="click:;"><img _ngcontent-ng-c1643807157 src="/assets/images/many-to-many-field.svg"><div _ngcontent-ng-c1643807157>ManyToManyField</div></div><div _ngcontent-ng-c1643807157 class jsaction="click:;"><img _ngcontent-ng-c1643807157 src="/assets/images/foreign-key-field.svg"><div _ngcontent-ng-c1643807157>ForeignKeyField</div></div><div _ngcontent-ng-c1643807157 class jsaction="click:;"><img _ngcontent-ng-c1643807157 src="/assets/images/json-field.svg"><div _ngcontent-ng-c1643807157>JSONField</div></div><!----></div></div><div _ngcontent-ng-c3744738751><h3 _ngcontent-ng-c1643807157>EmbeddedField</h3><p _ngcontent-ng-c1643807157>Work with MongoDB embedded documents using the EmbeddedField.</p><p _ngcontent-ng-c1643807157>Declare the document structure for usage in RESTful APIs and for data validation.</p><!----><!----><!----><!----><!----><!----></div></div></app-postcard></app-tab-grid></div></section><section><div class="l-fixed-content"><h2 id="security-and-integrity-checks">Security and Integrity Checks</h2><app-postcard _nghost-ng-c3744738751 ngh="6"><div _ngcontent-ng-c3744738751 class="pc"><div _ngcontent-ng-c3744738751><!----><div ngprojectas="postcard-media" class="language-python highlighter-rouge highlight codehilite"><pre><span></span><code><span class="k">def</span> <span class="nf">script_injection</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
  <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'&lt;script&gt;'</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
    <span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s1">'Script injection in </span><span class="si">%(value)s</span><span class="s1">'</span><span class="p">),</span>
                          <span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s1">'value'</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>

<span class="k">class</span> <span class="nc">Entry</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
  <span class="n">homepage</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">URLField</span><span class="p">(</span><span class="n">validators</span><span class="o">=</span><span class="p">[</span><span class="n">URLValidator</span><span class="p">,</span>
                                         <span class="n">script_injection</span><span class="p">])</span>
</code></pre></div></div><div _ngcontent-ng-c3744738751><p>Djongo performs <strong>checks on data fields</strong> before they are saved to the database.</p><p>Define <strong>custom validators</strong> or use builtin validators to check the data. Validation is triggered prior to writing to the database.</p><p>Running <strong>integrity checks</strong> and field value validators ensures protect from garbage data. </p></div></div></app-postcard></div></section><section><div class="l-fixed-content"><h2 id="prototyping">Stepwise Development</h2><app-prototyping _nghost-ng-c2648614480 ngh="1"><div _ngcontent-ng-c2648614480 class="chart"><div _ngcontent-ng-c2648614480 class="x-axis"> Security </div><div _ngcontent-ng-c2648614480 class="chart-grid"><div _ngcontent-ng-c2648614480 class="c1-title"> JSONField </div><div _ngcontent-ng-c2648614480 class="c1-content"> Represents documents with no structure, and no validations. </div><div _ngcontent-ng-c2648614480 class="c2-title"> EmbeddedField </div><div _ngcontent-ng-c2648614480 class="c2-content"> Used to describe the data structure that triggers automatic validations at the application level. </div><div _ngcontent-ng-c2648614480 class="c3-title"> Settings.py </div><div _ngcontent-ng-c2648614480 class="c3-content"> Set enforce_schema to True in settings.py to enable schema checks at the database level. </div></div><div _ngcontent-ng-c2648614480 class="y-axis"> Lines of Code </div><div _ngcontent-ng-c2648614480 class="cta"><a _ngcontent-ng-c2648614480 routerlink="/djongocs/create-account" class="cta" href="/djongocs/create-account" jsaction="click:;">Start Prototyping</a></div></div></app-prototyping></div></section><section><div class="l-fixed-content"><h2>Object Document Modeling</h2><app-postcard _nghost-ng-c3744738751 ngh="4"><div _ngcontent-ng-c3744738751 class="pc pc-img-right"><div _ngcontent-ng-c3744738751><img _ngcontent-ng-c3744738751 alt="postcard" width="1200" height="420" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/djongo-name-logo.png"><!----></div><div _ngcontent-ng-c3744738751><p>Djongo is a unified approach to database interfacing. It is an extension to the <a href="https://www.djangoproject.com/">Django ORM</a> framework but maps python objects to MongoDB documents.</p><p>Constructing queries using Djongo is <strong>much easier</strong> compared to writing lengthy Pymongo query documents. Storing raw <code>JSON</code> emitted by the frontend directly into the database is scary. Djongo ensures that <strong>only clean data</strong> gets through.</p><p><strong>You no longer</strong> need to use the shell to inspect your data. By using the <code>Admin</code> package, you can access and modify data directly from the browser. Djongo includes handy UI elements that help represent MongoDB documents on the browser.</p><a routerlink="/docs/get-started/" class="btn btn-primary btn-large text-center" href="/docs/get-started" jsaction="click:;">Get Started</a></div></div></app-postcard></div></section><section><div class="l-fixed-content section-break"><app-tires _nghost-ng-c939636367 ngh="8"><div _ngcontent-ng-c939636367 itemscope itemtype="https://schema.org/Offer" class="l-tire"><div _ngcontent-ng-c939636367 class="tire-col is-grey"><h2 _ngcontent-ng-c939636367 itemprop="name" class="tire-title" id="djongo-on github">Djongo on Github</h2><div _ngcontent-ng-c939636367 itemprop="price" class="tire-price">$0</div><div _ngcontent-ng-c939636367 itemprop="eligibleDuration" class="tire-period"> PER MONTH </div><a _ngcontent-ng-c939636367 class="tire-cta btn btn-green" href="/docs/get-started" jsaction="click:;"> Get Started</a><!----><!----><div _ngcontent-ng-c939636367 itemprop="description" class="tire-benefits"><div _ngcontent-ng-c939636367><div _ngcontent-ng-c939636367><img _ngcontent-ng-c939636367 src="/assets/images/tick.svg"></div><div _ngcontent-ng-c939636367> Free OSS version of Djongo. </div><!----></div></div><div _ngcontent-ng-c939636367 class="tire-benefits"><a _ngcontent-ng-c939636367 routerlink="/djongocs/feature-coverage" class="cta" href="/djongocs/feature-coverage" jsaction="click:;"> Compatibility Report </a></div></div><!----><div _ngcontent-ng-c939636367 class="tire-col is-grey"><h2 _ngcontent-ng-c939636367 itemprop="name" class="tire-title" id="latest-updates">Latest Updates</h2><div _ngcontent-ng-c939636367 itemprop="price" class="tire-price">$15</div><div _ngcontent-ng-c939636367 itemprop="eligibleDuration" class="tire-period"> PER MONTH </div><a _ngcontent-ng-c939636367 class="tire-cta btn btn-green" href="/djongocs/create-account" jsaction="click:;"> Create Account</a><!----><!----><div _ngcontent-ng-c939636367 itemprop="description" class="tire-benefits"><div _ngcontent-ng-c939636367><div _ngcontent-ng-c939636367><img _ngcontent-ng-c939636367 src="/assets/images/tick.svg"></div><div _ngcontent-ng-c939636367> Download the latest version of Djongo. </div><!----></div></div><div _ngcontent-ng-c939636367 class="tire-benefits"><a _ngcontent-ng-c939636367 routerlink="/djongocs/feature-coverage" class="cta" href="/djongocs/feature-coverage" jsaction="click:;"> Compatibility Report </a></div></div><!----><div _ngcontent-ng-c939636367 class="tire-col is-grey"><h2 _ngcontent-ng-c939636367 itemprop="name" class="tire-title" id="extended-features">Extended Features</h2><div _ngcontent-ng-c939636367 itemprop="price" class="tire-price">$55</div><div _ngcontent-ng-c939636367 itemprop="eligibleDuration" class="tire-period"> PER MONTH </div><a _ngcontent-ng-c939636367 class="tire-cta btn btn-green" href="/djongocs/create-account?tire=1" jsaction="click:;"> Create Account</a><!----><!----><div _ngcontent-ng-c939636367 itemprop="description" class="tire-benefits"><div _ngcontent-ng-c939636367><div _ngcontent-ng-c939636367><img _ngcontent-ng-c939636367 src="/assets/images/tick.svg"></div><div _ngcontent-ng-c939636367> Includes Latest updates. </div><div _ngcontent-ng-c939636367><img _ngcontent-ng-c939636367 src="/assets/images/tick.svg"></div><div _ngcontent-ng-c939636367> Container instance. </div><div _ngcontent-ng-c939636367><img _ngcontent-ng-c939636367 src="/assets/images/tick.svg"></div><div _ngcontent-ng-c939636367> MongoDB transactions. </div><div _ngcontent-ng-c939636367><img _ngcontent-ng-c939636367 src="/assets/images/tick.svg"></div><div _ngcontent-ng-c939636367> Advanced Fields. </div><!----></div></div><div _ngcontent-ng-c939636367 class="tire-benefits"><a _ngcontent-ng-c939636367 routerlink="/djongocs/feature-coverage" class="cta" href="/djongocs/feature-coverage" jsaction="click:;"> Compatibility Report </a></div></div><!----><!----></div></app-tires></div><div class="l-fixed-content"><!----><!----></div></section><section><div class="l-fixed-content"><h2 class="is-subtitled">DjongoCS Containers</h2><p> Preconfigured Django MongoDB Djongo instances on GCP </p><app-postcard _nghost-ng-c3744738751 ngh="4"><div _ngcontent-ng-c3744738751 class="pc"><div _ngcontent-ng-c3744738751><img _ngcontent-ng-c3744738751 alt="postcard" width="615" height="427" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/containers.svg"><!----></div><div _ngcontent-ng-c3744738751><p>Focus on developing the models and views for your app. Let Djongo cloud services take care of configuration and deployment.</p><p>Download and setup the latest version of djongo from <em>pypi.djongomapper.com</em> for local development.</p><p>Manage access keys, modify subscription plans, and request support using the dashboard.</p><a routerlink="/djongocs/create-account" class="btn btn-green" href="/djongocs/create-account" jsaction="click:;">Create Account</a></div></div></app-postcard></div></section><section><div class="l-fixed-content"><h2>Djongo Commercial License</h2><app-tiles _nghost-ng-c2080390603 ngh="9"><div _ngcontent-ng-c2080390603 class="l-grid l-tiles"><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Perpetual" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/perpetual.svg"><!----><h2 _ngcontent-ng-c2080390603>Perpetual</h2><p _ngcontent-ng-c2080390603>Use current and future versions of the djongo package for commercial purposes perpetually.</p><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Subscription" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/subscription.svg"><!----><h2 _ngcontent-ng-c2080390603>Subscription</h2><p _ngcontent-ng-c2080390603>Use the djongo package for commercial purposes for a limited time period.</p><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Fallback" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/fallback.svg"><!----><h2 _ngcontent-ng-c2080390603>Fallback</h2><p _ngcontent-ng-c2080390603>Use a specific version of the djongo package for commercial purposes perpetually.</p><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Deploy" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/deploy.svg"><!----><h2 _ngcontent-ng-c2080390603>Deploy</h2><p _ngcontent-ng-c2080390603>Host closed source applications that use the Djongo package.</p><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Modify" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/modify.svg"><!----><h2 _ngcontent-ng-c2080390603>Modify</h2><p _ngcontent-ng-c2080390603>Modify the djongo source code without requiring to open source your modifications.</p><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Redistribute" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/redistribute.svg"><!----><h2 _ngcontent-ng-c2080390603>Redistribute</h2><p _ngcontent-ng-c2080390603>Include and redistribute the djongo package without having to open source your own code.</p><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="First Access" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/rapid.svg"><!----><h2 _ngcontent-ng-c2080390603>First Access</h2><p _ngcontent-ng-c2080390603>Djongo packages released to enterprises are compatible with newer versions of Django and MongoDB.</p><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Support" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/support-new.svg"><!----><h2 _ngcontent-ng-c2080390603>Support</h2><p _ngcontent-ng-c2080390603>As an enterprise customer, your queries and change requests take top priority.</p><!----></div><!----><div _ngcontent-ng-c2080390603 class="grid-3-row"><img _ngcontent-ng-c2080390603 height="78.5" width="143.54" alt="Redistribute" loading="lazy" fetchpriority="auto" decoding="auto" ng-img="true" src="/assets/images/security.svg"><!----><h2 _ngcontent-ng-c2080390603>Secure</h2><p _ngcontent-ng-c2080390603>Djongo source is open and viewed by hundreds of developers everyday. Reported security vulnerabilities, bugs are rectified and continuously integrated.</p><!----></div><!----><!----></div></app-tiles><div class="punchline"><p>The <a routerlink="/legal/enterprise/commercial-license" href="/legal/enterprise/commercial-license" jsaction="click:;">Djongo commercial license</a> gives an enterprise the freedom to host commercial apps with no restrictions.</p></div><div class="cta-btn"><a routerlink="/djongocs/contact-us" class="btn btn-primary btn-large" href="/djongocs/contact-us" jsaction="click:;">Contact Us</a></div></div></section><section><div class="l-fixed-content"><h2 id="services">Services</h2><app-text-grid _nghost-ng-c2134432430 ngh="10"><div _ngcontent-ng-c2134432430 class="l-grid l-grid-text"><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Consulting</h2><p _ngcontent-ng-c2134432430>Help on choosing the right database solution for your use case.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Migrations</h2><p _ngcontent-ng-c2134432430>We help migrate data from SQL to MongoDB the right way.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>App development</h2><p _ngcontent-ng-c2134432430>Build and deploy Django Apps on MongoDB.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Staff augmentation</h2><p _ngcontent-ng-c2134432430>Ideal for businesses with existing development teams that want to accelerate timelines using our specialized talent. Our developers will integrate seamlessly with your in-house team. We will work together to increase productivity and deliver your software faster.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Software development teams</h2><p _ngcontent-ng-c2134432430>We deliver teams of developers having cross functional expertise in areas such as QA, DevOps, frontend and backend. These professionals will work with your in-house project manager or scrum master.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Software outsourcing</h2><p _ngcontent-ng-c2134432430>When you need both the delivery of a product and the management of development to be taken care of, software outsourcing is the way to go. We handle the development process from start to finish allowing you to focus on your core business. Get access to the top Django talent, while keeping your costs low and productivity high.</p></div><!----></div></app-text-grid></div></section><section><div class="l-fixed-content"><h2>Expertise</h2><app-text-grid _nghost-ng-c2134432430 ngh="10"><div _ngcontent-ng-c2134432430 class="l-grid l-grid-text"><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>RESTful development</h2><p _ngcontent-ng-c2134432430>Using Django Resf Framework for data serialization, viewsets, and generic views. Our RESTful APIs are secure and robust.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Web interface design</h2><p _ngcontent-ng-c2134432430>We use Angular to create web interfaces. Our Frontend design has intutive navigation, responsive layouts, and reusable widgets.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Payment gateway integration</h2><p _ngcontent-ng-c2134432430>We offer payment gateway integration for eCommerce and mCommerce stores.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Optimized database programming</h2><p _ngcontent-ng-c2134432430>Let our team of expert database programmers create the perfect django app for you. Utilizing our vast experience with different databases we design apps with the right data on database architecture.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>SQL to NoSql migration expertise</h2><p _ngcontent-ng-c2134432430>Create the right transition plan to move from a sql to a nosql database. We create data models that accurately map relational data onto a nonrelational database.</p></div><div _ngcontent-ng-c2134432430 class="grid-3-row"><div _ngcontent-ng-c2134432430 class="line"></div><h2 _ngcontent-ng-c2134432430>Utilization analytics</h2><p _ngcontent-ng-c2134432430>Use the auto generated analytics logs to monitor how moving from a sql to a nosql data representation has improved your query performance.</p></div><!----></div></app-text-grid><div class="cta-btn"><a routerlink="/djongocs/contact-us" class="btn btn-primary btn-large" href="/djongocs/contact-us" jsaction="click:;">Contact Us</a></div></div></section></div></article></main></app-home><!----></div><div _ngcontent-ng-c2830357685 id="footer" class="page-footer"><footer _ngcontent-ng-c2830357685><aside _ngcontent-ng-c2830357685 class="l-fixed-notice cookie-notice open"><p _ngcontent-ng-c2830357685>We use cookies to enhance user experience. You consent to their usage by browsing this site. <button _ngcontent-ng-c2830357685 id="cookie-accept" class="btn btn-green" jsaction="click:;">Accept</button></p></aside><div _ngcontent-ng-c2830357685 class="page-footer-copyright">© 2025 Doableware AB.</div></footer></div></div></app-root>
<script>
  window.ga = function () {
    ga.q.push(arguments)
  };
  ga.q = [];
  ga.l = +new Date;
  ga('create', 'UA-75159067-1', 'auto');
  ga('set', 'anonymizeIp', false);
  ga('send', 'pageview')
</script>
<script src="https://www.google-analytics.com/analytics.js" async></script>
<link rel="modulepreload" href="chunk-7WKV4J2W.js"><link rel="modulepreload" href="chunk-HEUFHRRO.js"><link rel="modulepreload" href="chunk-XPVX74O3.js"><link rel="modulepreload" href="chunk-YECZU7CY.js"><link rel="modulepreload" href="chunk-UZ35QZ23.js"><link rel="modulepreload" href="chunk-FDEVB4XX.js"><script src="polyfills-BUUDEW7V.js" type="module"></script><script src="main-E23G4UPT.js" type="module"></script>
<script id="ng-state" type="application/json">{"__nghData__":[{"t":{"0":"t1","2":"t2","3":"t3"},"c":{"0":[],"2":[],"3":[]}},{},{"t":{"2":"t5"},"c":{"2":[{"i":"t5","r":2,"t":{"0":"t6"},"c":{"0":[{"i":"t6","r":1,"t":{"1":"t7","6":"t8"},"c":{"1":[{"i":"t7","r":1}],"6":[{"i":"t8","r":1}]}}]},"x":3},{"i":"t5","r":1,"t":{"0":"t6"},"c":{"0":[]}},{"i":"t5","r":2,"t":{"0":"t6"},"c":{"0":[{"i":"t6","r":1,"t":{"1":"t7","6":"t8"},"c":{"1":[{"i":"t7","r":1}],"6":[{"i":"t8","r":1}]}}]},"x":3},{"i":"t5","r":1,"t":{"0":"t6"},"c":{"0":[]}}]}},{"t":{"2":"t9"},"c":{"2":[{"i":"t9","r":1,"x":6}]}},{"n":{"3":"1f"},"t":{"3":"t11"},"c":{"3":[{"i":"t11","r":1}]}},{"t":{"4":"t10","5":"t12","6":"t13","7":"t14","10":"t15"},"c":{"4":[{"i":"t10","r":1,"n":{"2":"1f2nf"}}],"5":[],"6":[],"7":[],"10":[{"i":"t15","r":1,"x":4}]}},{"n":{"3":"1f"},"t":{"3":"t11"},"c":{"3":[]}},{"n":{"1":"0f3n","4":"0f2nf"},"t":{"3":"t16","6":"t17","7":"t18","8":"t19","9":"t20","10":"t21","11":"t22"},"c":{"3":[{"i":"t16","r":1,"x":6}],"6":[{"i":"t17","r":2}],"7":[],"8":[],"9":[],"10":[],"11":[]}},{"t":{"2":"t23"},"c":{"2":[{"i":"t23","r":2,"t":{"0":"t24"},"c":{"0":[{"i":"t24","r":1,"t":{"8":"t25","9":"t26","13":"t27"},"c":{"8":[{"i":"t25","r":1}],"9":[],"13":[{"i":"t27","r":2}]}}]},"x":2},{"i":"t23","r":2,"t":{"0":"t24"},"c":{"0":[{"i":"t24","r":1,"t":{"8":"t25","9":"t26","13":"t27"},"c":{"8":[{"i":"t25","r":1}],"9":[],"13":[{"i":"t27","r":2,"x":4}]}}]}}]}},{"t":{"2":"t5"},"c":{"2":[{"i":"t5","r":2,"t":{"0":"t6"},"c":{"0":[{"i":"t6","r":1,"t":{"1":"t7","6":"t8"},"c":{"1":[{"i":"t7","r":1}],"6":[]}}]},"x":9}]}},{"t":{"2":"t30"},"c":{"2":[{"i":"t30","r":1,"x":6}]}},{"n":{"25":"24f2nf","43":"42f3n","167":"42f2nf","192":"191f2nf","231":"230f2nf"},"t":{"221":"t28","222":"t29"},"c":{"221":[],"222":[]}},{"t":{"6":"t0","12":"t4"},"c":{"6":[],"14":[{"i":"c3090606182","r":1}]},"d":[9,10,12]}]}</script></body></html>